/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.jaiz.twitter.dao;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.jaiz.twitter.model.DBManager;
import org.jaiz.twitter.model.Seguidores;
import org.jaiz.twitter.model.Tweet;
import org.jaiz.twitter.util.Query;

/**
 *
 * @author EmeDe
 */
public class SeguidoresDAO extends DBManager implements IDAO<Seguidores, Integer> {

    @Override
    public void create(Seguidores e) {
        try {
            PreparedStatement statement = createStatement(Query.getQuery("seguidores.create"));
                statement.setInt(1, e.getId());
                statement.setString(2, e.getUsuario().getUserName());
                statement.setString(3, e.getFollow().getUserName());
                statement.executeUpdate();
        } catch (SQLException ex) {
            Logger.getLogger(SeguidoresDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    @Override
    public void delete(Seguidores e) {
        try {
            PreparedStatement statement = createStatement(Query.getQuery("seguidores.delete"));
            statement.setInt(1, e.getId());
            statement.executeUpdate();
        } catch (SQLException ex) {
            Logger.getLogger(SeguidoresDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    @Override
    public void update(Seguidores e) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public Collection<Seguidores> getAll() {
        try {
            Collection<Seguidores> seguidores = new ArrayList<Seguidores>();
            UsuarioDAO udao  = new UsuarioDAO(); //Para obtener el usuario
            
            PreparedStatement statement = createStatement(Query.getQuery("seguidores.getAll"));
            ResultSet rs = statement.executeQuery();
            while(rs.next()){
                Seguidores seguidor = new Seguidores();
                seguidor.setId(rs.getInt("idSeguidores"));
                seguidor.setUsuario(udao.getById(rs.getString("usuario")));
                seguidor.setFollow(udao.getById(rs.getString("follow")));
                seguidor.setCreateDate(rs.getDate("create_date"));
                seguidores.add(seguidor);
            }
            return seguidores;
        } catch (SQLException ex) {
            Logger.getLogger(TweetDAO.class.getName()).log(Level.SEVERE, null, ex);
            return null;
        }
    }

    @Override
    public Seguidores getById(Integer i) {
        try {
            UsuarioDAO udao  = new UsuarioDAO(); //Para obtener el usuario
            
            PreparedStatement statement = createStatement(Query.getQuery("seguidores.getById"));
            ResultSet rs = statement.executeQuery();
            if(rs.next()){
                Seguidores seguidor = new Seguidores();
                seguidor.setId(rs.getInt("idSeguidores"));
                seguidor.setUsuario(udao.getById(rs.getString("usuario")));
                seguidor.setFollow(udao.getById(rs.getString("follow")));
                seguidor.setCreateDate(rs.getDate("create_date"));
                return seguidor;
            }
            return null;
        } catch (SQLException ex) {
            Logger.getLogger(TweetDAO.class.getName()).log(Level.SEVERE, null, ex);
            return null;
        }
    }
    
}
